package com.efast.cafe.portal.service.company;

import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import com.efast.cafe.framework.exception.ServiceException;
import com.efast.cafe.portal.entity.company.PortalCompanyRegister;
import com.efast.cafe.portal.remote.company.PortalCompanyRegisterService;

/******************************************************************************
 * @File name : PortalCompanyRegisterService.java
 * 
 * @Author : fxm
 * 
 * @Date : 2016-6-21
 * 
 * @Copyright Notice: Copyright (c) 2016 Efast Serv. All Rights Reserved. This
 *            software is published under the terms of the Efast Software
 *            License version 1.0, a copy of which has been included with this
 *            distribution in the LICENSE.txt file. 企业自注册对外开放服务
 * 
 *            ------------------------------------------------------------------
 *            ---------- Date Who Version Comments 2016-6-21 下午3:02:22 fxm 1.0
 *            Initial Version
 *****************************************************************************/
public interface IPortalCompanyRegisterService extends PortalCompanyRegisterService{

	/**
	 * 企业注册
	 * 
	 * @Date : 2016-6-21
	 * @param register
	 * 注册内容
	 * 1.校验邮箱是否已经被注册 
	 * 	1.1 邮箱已被注册 && 已激活 抛出异常提示已被注册
	 *  1.2 邮箱已被注册 && 未激活
	 *    1.2.1校验是否超过截止时间 如果没超过激活截止时间 抛出异常提示请邮件激活 
	 *    1.2.2校验是否超过截止时间  如果超过了激活截止时间 重新发送激活邮件 
	 *    	同时更新此记录的激活码 和 激活截止时间 默认截止时间为 在当前时间+24小时
	 * 2.邮箱未被注册 新增一条注册记录 激活码和激活截止时间 后台计算 申请注册时间为当前系统时间 并发送邮件
	 * 注：邮件内容中的 链接地址为 系统暴露的邮件激活服务地址 地址带上参数：email和activate_code 链接地址需要加密
	 */
	public void register(PortalCompanyRegister register);
	
	
	/**
	 * 企业注册激活 通过邮件中的链接激活
	 * @Date        :      2016-6-21
	 * @param email
	 * @param activate_code
	 * @throws ServiceException
	 * 1.校验email是否存在同时是否已被激活 如果已被激活 抛出提示异常
	 * 2.校验 email是否已被激活 如果未被激活 
	 * 	2.1校验链接是否有效（校验当前系统时间是否超过了激活截止时间）
	 * 	2.2校验激活码是否一致
	 * 
	 * 校验通过后
	 * 	1. 系统生成企业代码 并且将用户注册的企业信息更新到portal_company_info表
	 * 	2. 生成企业管理员账号 更新到portal_company_user表（应该同时更新到sso,接口暂时缺失）
	 * 	3. 设置账号默认角色权限（暂时保留）
	 *  4. 更新此条注册信息 为已激活
	 */
	public void registerActivate(String activate_code)throws ServiceException;
	
	
	
}
